'use strict';

const Controller = require('egg').Controller;
const images = require('images');
const fs = require('fs');
const path = require('path');

class ImageController extends Controller {
  async index() {
    const { ctx } = this;// app
    const { query } = ctx.request;
    const { templateId, userId } = query;
    console.log('templateId', templateId);
    console.log('userId', userId);
    const wechatAccount = await this.ctx.model.WechatAccount.findOne({ where: { userId } });
    console.log('wechatAccount', wechatAccount);
    const avatare = await this.ctx.curl(wechatAccount.avatarUrl);
    console.log('avatare', avatare);
    const banner = await this.ctx.model.Banner.findByPk(templateId);// templateId
    if (banner) {
      console.log('template banner ', banner.imageHash);
      console.log('avatarUrlavatarUrlavatarUrl', avatare);
      images(avatare.data) // 加载头像文件
        .size(40) // 设置图片大小
        .save('avatar.png', {// 生成头像小图
          quality: 50, // 保存图片到文件,图片质量为100
        });
      const image1 = await this.ctx.curl(`https://images.zxgvip.com/${banner.imageHash}`);
      const prefix = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&';
      const appid = this.config.thirdParty.wechatWeapp.appId;
      const secret = this.config.thirdParty.wechatWeapp.appSecret;
      const accessTokenUrl = `${prefix}appid=${appid}&secret=${secret}`;
      const accessToken = await this.ctx.curl(accessTokenUrl);
      const stringAccessToken = accessToken.data.toString();
      const jasonToken = JSON.parse(stringAccessToken);
      const opt = {
        method: 'POST',
        data: JSON.stringify({
          page: 'pages/inviteResult/index',
          scene: `inviterId=${userId}`,
        }),
      };
      const url = `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${jasonToken.access_token}`;
      const code = await this.ctx.curl(url, opt);
      const image = code.data;
      const imageCode = 'code.png';
      const jointCode = 'jointCode.png';
      const avatar = 'avatar.png';
      images(image) // 加载二维码图像文件
        .size(90) // 设置图片大小
        .save('code.png', { // 生成二维码小图
          quality: 50, // 保存图片到文件,图片质量为100
        }); // 生成二维码小图
      images(image1.data) // 加载模板图像文件
      // 加载图像文件
        .size(400) // 等比缩放图像到400像素宽
        .draw(images(imageCode), 275, 562) // 在(275,562)处绘制二维码 (275,562)
      // 在(275,562)处绘制Log
        .save('jointCode.png', { //
          quality: 50, // 保存图片到文件,图片质量为50
        }); // 生成二维码+模板拼接的图
      images(jointCode) // 加载二维码+模板拼接的图像文件
        .draw(images(avatar), 175, 138) // 在处绘制用户头像 (175,138)
        .save(`${templateId}-${userId}-jointAvatarCode.png`, {
          quality: 50, // 保存图片到文件,图片质量为50
        });
      this.ctx.status = 200;
      this.ctx.type = 'image/png';
      this.ctx.body = fs.readFileSync(path.resolve(`${templateId}-${userId}-jointAvatarCode.png`));
    }
  }
}

module.exports = ImageController;
